#coding:utf-8
from rest_framework import viewsets
from erp_system.models import DeptModel

from MSB_ERP.apps.erp_system.serializer.Dept_Serializer import DeptSerializer
from rest_framework.decorators import action
from rest_framework.response import Response

from MSB_ERP.utils.base_views import MultipleDestroyMixin
from MSB_ERP.utils.pagination import GlobalPagination


class DeptModelView(viewsets.ModelViewSet,MultipleDestroyMixin):
    """
     create :
    新增部门,



    retrieve:
    查询当个部门

    list:
    查询所有的


    update:
    修改部门，修改部门本身的属性

    partial_update:
    局部修改部门，修改任意指定的属性

    destroy:
    删除指定的单个部门

    find_Permissions_by_menu
    查询属于指定菜单或者接口的部门列表，需要传参：menu_id,比如：/find_Permissions_by_menu ?menu_id=2
    """

    queryset = DeptModel.objects.all()
    serializer_class = DeptSerializer
    pagination_class = GlobalPagination
    def get_queryset(self):
        """
        请求参数中有pid，父部门的ID
        1,如果没用传pid，则查询所有的部门
        2，如果传过来的pid=0,则查询顶级部门列表
        3，如果传过来的pid=非0,则查询父部门下的所有子部门列表

        """
        pid=self.request.query_params.get('pid',None)
        if pid:
            pid=int(pid)
            if pid==0:
                return DeptModel.objects.filter(parent__isnull=True).all()#parent__isnull判断这个函数是否为空，涉及关联的对象或属性都是用双下划线
            else:
                return DeptModel.objects.filter(parent__id=pid).all()
        else:
             return DeptModel.objects.all()






































